1. The Field of the Invention
The present invention relates to electronic messaging. More specifically, the present invention relates to regulating client requests in an electronic messaging environment.
2. Background and Related Art
Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, and database management) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another to form both wired and wireless computer networks over which the computer systems can communicate electronically to share data. As a result, many tasks performed at a computer system (e.g., voice communication, exchanging electronic messages, electronic conferencing, web browsing) include electronic communication between a number of computer systems via wired and/or wireless computer networks.
In particular, the exchange of electronic messages has become an important method for communicating. Computer system users often send and receive electronic messages (e.g., electronic mail messages, instant messages, faxes, news group postings, etc.,) to exchange information with one another. For example, to send an electronic mail message (and potentially other message related content), a sending user typically selects a new message option from within an electronic mail application. In response to the selection, the electronic mail application displays one or more fields (e.g., a To field, a Body field, etc.) that can receive user entered data. The sending user then enters data (e.g., at a keyboard) into the displayed fields. The sending user can also select other message related data, such as, for example, a file attachment or hyperlink, that is to be included in the electronic mail message. When appropriate, the sending user can save the electronic mail message as a draft or send the electronic mail message to a recipient user (e.g., by selecting the appropriate “save” or “send” control within the electronic mail application). Sending the electronic mail message results in the electronic mail message being routed from a sending computer system, through a sending mail server, across a computer network (e.g., the Internet), to a receiving mail server that stores electronic mail messages for a recipient user.
The recipient user can subsequently use an electronic mail application to access the electronic mail message from the receiving mail server. Based at least in part on environment, electronic mail applications can be configured to access electronic mail messages differently. For example, electronic mail applications can be configured to access electronic mail messages directly from a server without caching accessed electronic mail messages (or message related content) at the client (which may be referred to as a “non-cached” or “online” clients). That is, accessed electronic mail messages remained stored only at the server.
Thus, each request for access to an electronic mail message (even the same electronic mail message) results in network communication between the client and the server. Electronic mail applications that have more permanent network connections and higher available bandwidth are often configured to operate as online clients. For example, electronic mail applications resident in personal computers connected to a corporate Local Area Network (e.g., operating at 100 MB/s) can be configured as online clients.
Mail servers are typically limited (either through administrator configuration or available server resources) to specified a number of requests that be simultaneously processed. Since online clients typically request relatively small amounts of message related content per request (e.g., one electronic message), corresponding mail servers can process online client requests relatively efficiently and resources are more quickly freed-up to process other requests.
Unfortunately, online mode may not be acceptable for electronic mail applications having less permanent network connections. For example, mobile devices may have sporadic and limited network access depending on the physical location of the mobile device user. Providing access to electronic mail messages (and message related content) only when the mobile device has an active network connection may be unacceptable to the mobile device user. Thus, electronic mail applications with limited network access can be configured to download and store (or cache) all of a user's electronic mail messages at the client (which may be referred to as a “cached client”) when a network connection is available. Accordingly, cached clients can subsequently access the stored electronic messages even when the cached client is offline. When operating offline, a cached client can also store newly drafted electronic messages for subsequent upload and delivery when a network connection becomes available.
However, since cached clients request increased amounts of message related content at once (e.g., all of a user's electronic mail messages), a request from a cached client can consume significantly more server resources and take significantly longer to process. Accordingly, some mechanisms have been developed to reduce the number of electronic mail messages and amount of message related content needed to satisfy a request from a cached client. For example, a cached client can be synchronized with a mail server such that only electronic mail messages and message related content that has changed since the cached client last accessed the server is returned to the client in response to a request. However, depending on the frequency with which electronic messages are received and the amount of message related content in received electronic messages, a cached client request can still result in a relatively large amount of message related content having to be downloaded to a cached client. Accordingly, even requests from synchronized cached clients can consume significant server resources and take a server a relatively long time to process. Further, synchronization logic for identifying the electronic mail messages and message related content that is to be returned in response to a cached client request can consume additional server resources.
In many environments, electronic mail servers are configured to accept requests from both online/cached clients and non-cached clients. For example, when in the office, a user can use a personal computer having an electronic mail application configured to operate as an online client. On the other hand, when traveling, the user can use a Personal Digital Assistant (“PDA”) having an electronic mail application configured to operate as a cached client. Thus, depending on the number of users authorized to access mail from a mail server, the mail server may, from time to time, simultaneously process requests from both cached and non-cached clients. In some environments, such as, for example, at a corporate mail server, significant numbers of requests from both cached and non-cached clients are simultaneously processed.
Mail servers typically process requests as the requests are received. When a maximum number of requests are simultaneously being processed, any further requests will fail and message related content is not returned from the server to a requesting client. Thus, there is always some potential, based on mail server load, that a mail server will reject a client request for message related content. The possibility of client requests being rejected significantly increases when a mail server is simultaneously processing a number of, typically longer duration, cached client requests. That is, cached clients can potentially overload a mail server with requests for increased amounts of message related content and complex synchronization operations such that the mail server is essentially unavailable to other (online and/or cached) clients. Rejection of client requests can degrade the user experience, for example, causing an online client to not properly respond to a user command (e.g., to open an electronic mail message) or preventing a cached client from synchronizing. Therefore, what would be advantageous are mechanisms for regulating client requests in an electronic messaging environment.